<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="../../../src/base/_core.js"></script>
    <script type="text/javascript" src="../../../src/core/util/log.js"></script>
    <script type="text/javascript" src="../../../src/core/util/cache.js"></script>
</head>
<body>
<script type="text/javascript">

    (function ($) {
        var expando = "jQuery" + (new Date).getTime(),
                hasOwnProperty = Object.prototype.hasOwnProperty,
                _data = $.data,
                _removeData = $.removeData;
        $.data = function (obj, name, data) {
            if (obj.nodeType) {
                return _data(obj, name, data);
            }
            var thisCache,
                hasCache = hasOwnProperty.call(obj, expando);
            if (!hasCache && typeof name === "string" && data === undefined) {
                return undefined;
            }

            if (typeof name === "object") {
                obj[ expando ] = $.extend(true, {}, name);

            } else if (!hasCache) {
                obj[ expando ] = {};
            }
            thisCache = obj[ expando ];
            if (typeof name === "string") {
                if (data !== undefined) {
                    thisCache[ name ] = data;
                }
                return thisCache[ name ];
            }
            return thisCache;
        };

        $.removeData = function (obj, name) {
            if (obj.nodeType) {
                return _removeData(obj, name);
            }
            if (name) {
                if (hasOwnProperty.call(obj, expando)) {
                    delete obj[ expando ][ name ];
                    if ($.isEmptyObject(obj[expando])) {
                        delete obj[ expando ];
                    }
                }
            } else {
                delete obj[ expando ];
            }
        };
    })(jQuery);
</script>
</body>
</html>